Use case: I2C master transmit/receive in interrupt mode ¶
This use case shows how to perform master transmit and master receive operations using interrupts.
Sequence diagram ¶
Code snippet ¶
|
HAL1 |
HAL2 |
|---|---|
#define I2C_ADDRESS 0x30F;
HAL_I2C_Master_Transmit_IT(&hi2c2, 0x30F, aTxBuffer, TXBUFFERSIZE);
HAL_I2C_Master_Receive_IT(&hi2c2, I2C_ADDRESS, aRxBuffer, RXBUFFERSIZE);
|
uint16_t NumData = 0;
HAL_I2C_MASTER_Transmit_IT(&hi2cx, I2C_SlaveAddress[Adr_Idx], TxBuffer, 0);
HAL_I2C_MASTER_Receive_IT(&hi2cx, I2C_SlaveAddress[Adr_Idx], RxBuffer, 0);
|
Key changes ¶
HAL2 uses renamed I2C interrupt APIs (for example, HAL_I2C_MASTER_Transmit_IT() instead of HAL_I2C_Master_Transmit_IT()).

![@startuml
participant "User Application" as App
participant "HAL I2C" as HAL_I2C
== Master Transmit IT ==
App -> HAL_I2C: HAL_I2C_MASTER_Transmit_IT(&hi2cx, I2C_SlaveAddress[Adr_Idx], TxBuffer, 0)
== Master Receive IT ==
App -> HAL_I2C: HAL_I2C_MASTER_Receive_IT(&hi2cx, I2C_SlaveAddress[Adr_Idx], RxBuffer, 0)
@enduml](../../../../../_images/plantuml-dbc6f8c0d804ec36728dd91dfa8f631671b2cae4.png)